June 13, 2020
By: Kevin

外部Clojure学习外部材料梳理-2023-06-14版本

  1. 了解这门语言
  2. 练习
  3. 深入理解语言
  4. 理念
  5. 书籍或课程
  6. 熟悉编辑器和REPL
  7. Clojure应用程序编程
  8. 错误处理
  9. 调试
  10. 建模和组织代码
  11. 面向从面向对象 (OO) 来的人的函数式编程
  12. 基础知识之外
  13. JVM
  14. 开发环境IDE

大多数需要科学上网.

这些资源(文章、书籍和视频)在开始学习 Clojure 语言或学习语言的特定部分时非常有用。

  • 🔴 强制(适用于初学者和中级学习者)
  • 🟩 针对初学者
  • 🟨 针对中级学习者

了解这门语言

使用这些资源快速了解语言。比 Hello World 深入,比一本书浅。

练习

  • 🔴 4clojure:学习 Clojure 的一个重要部分。完成所有初级、简单和中等难度的练习。挑战难题, 查看其他人的解决方案,并重写你的解决方案。这是 Clojure

基础的一次训练,非常有效。

  • 🟩 Exercism
  • 🟩 Clojure Koans
  • 🟩 火星车:这是一个简单的问题(不仅仅是纯数学/数据处理),让你探索一些领域建模、编写测试等。

深入理解语言

一种语言会影响思考方式。以下视频,尤其是 Rich 的视频非常有力,是Clojure光泛使用用的主要原因。在学习 Clojure 的同时,建议每天观看/阅读这些视频(可能一两个)。

理念

为什么要以这种方式设计语言?深入了解制作者的思想对于有效使用语言很有帮助。

书籍或课程

以下图书可以在zlibary下载到

  • Clojure的乐趣:非常推荐的书。如果愿意接受稍微陡峭的学习曲线,它会很有效。
  • Clojure编程:这是新手们正在阅读的书,听说很不错。作者是绝对的行家。
  • Clojure实例:这本书曾在IN/Clojure研讨会上用于一天的初学者速成课程。如果喜欢通过例子学习,强烈考虑这本书。
  • Clojure勇者真传:这是一本有趣的书,容易理解。有很好的宏部分。
  • 小小的Scheme程序员:虽然不是Clojure,但非常值得一读。
  • Eric Normand的课程:这些是付费课程,但如果你想要一个可以在相对短时间内提升技能的完整课程,我会推荐这些。
  • Lambda岛的课程:看看关于React/Reagent和测试的章节。它们是免费的

熟悉编辑器和REPL

Clojure应用程序编程

当你认真考虑使用Clojure进行工作时,你需要锐化某些技能,并进行打磨。以下是我通常向人们推荐的一些资源:

  • 🔴 社区风格指南:正确地格式化你的代码。一旦你写了一些Clojure代码,就整体阅读一遍这个指南,然后在不确定时把它当作参考。
  • 🔴 Linting:设置clj kondo,它会帮助你遵守那个风格指南,并在此过程中教你一些Clojure指南。
  • 🔴 解构:我看到很多新手错过了良好的解构,这是我通常推荐他们阅读的文章。
  • 🔴 Prismatic/Plumatic指南:阅读这三篇文章。每当人们在数据结构决策上遇到困难时,我都会把他们引向这些文章。
  • 🟩 Stuart Sierra的做与不做清单:阅读所有这些文章。我经常推荐人们阅读关于命名函数的文章,至少阅读那一篇。
  • 🟩 手持剪刀奔跑:Stu的另一个演讲,提醒你使用REPL。
  • 🟨 数据 > 函数 > 宏:我希望有更多关于这个主题的资料。它对FP中的设计有很大影响。

错误处理

社区并没有一个公认的答案。你的方法很大程度上取决于你是否喜欢异常。有很多文章和讨论围绕这个话题,但似乎没有什么能总结它。

  • 可能值得浏览一些clojureverse中的有趣讨论:123
  • 想要一种单子方法?使用Failjure。但也要阅读相关的博客文章
  • [进行中] 铁路导向编程
  • [进行中] Erlang风格错误元组
  • [进行中] 异常及其有效使用

调试

建模和组织代码

  • 🟨 Clojureverse 讨论:这是一个非常详细(且很长)的讨论,包含几种不同的观点。将这些想法浓缩在某处会很好。
  • 🟨 函数核心命令式外壳:这是函数式语言中结构化代码的主要方式,Shantanu 在这里很好地阐述了其理由和好处。
  • 🟨 如何命名函数:这是一个很棒的文章,我经常推荐给人们。
  • 🟨 冗余映射:通常是我重构会议中的首要建议之一。
  • 🟨 Clojure 的要素:这是命名事物的宝库。
  • 🟨 命名空间组织:这篇文章的基础是坚实的。尽管我可能会在大段代码中使用命名空间。
  • 🟩 《Clojure 编程》中的序列部分:这是对在 clojure.core 中用于序列的接口设计的清晰介绍。然而,它也广泛适用于应用程序中的接口/协议设计。

面向从面向对象 (OO) 来的人的函数式编程

基础知识之外

这些不是学习 Clojure 的必需,但它们会打开你的思维,让你了解某些令人惊讶的思维范式。

JVM

开发环境IDE

Tags: clojure clojurescript